import redis
import logging


class Config(object):
    """配置项目信息类"""

    # 设置SECRET_KEY，通过os和base64模块
    SECRET_KEY = '1cFzF5BCVtOYZfnLG89/snCsDguxj65H3yesA1s2Dl3IXCP9qrYOZgMKXSfcLame'
    # 数据库的配置信息
    SQLALCHEMY_DATABASE_URI = 'mysql://root:mysql@127.0.0.1:3306/news_info'
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    # redis配置
    REDIS_HOST = '127.0.0.1'
    REDIS_PORT = 6379

    # session存储的配置信息
    # 使用的是redis 的数据库类型
    SESSION_TYPE = 'redis'
    # 使用redis实例
    SEESION_REDIS = redis.StrictRedis(host=REDIS_HOST, port=REDIS_PORT)
    # 让cookie 中的session_id被加密处理
    SESSION_USE_SIGNER = True
    # 设置session的有效期，默认单位秒
    PERMANENT_SESSION_LIFETIME = 24*3600*2


class DevelopementConfig(Config):
    """开发模式下的配置类"""
    # 开启调试模式
    DEBUG = True
    LOG_LEVEL = logging.DEBUG


class ProductionConfig(Config):
    """生产模式下的配置类"""
    LOG_LEVEL = logging.WARNING

# 开发中一般不会修改业务逻辑块的代码，只修改配置文件和管理文件的代码
# 为了解决上述问题，所以定义一个字典，当产品上线的时候，只需改变传入的键
# 就可以获得生产模式下的对应配置
config_dict = {
    'developement': DevelopementConfig,
    'production': ProductionConfig
}
